package com.beijing.lambadShow;

/**
 * @Author Ma Wenqi
 * @Date 2021/3/27 14:47
 * @Version 1.0
 */
public class TestLamdba2 {

    public static void main(String[] args) {
        Ilove love = new Love();
        love.love(2);


        //4
        class Love implements Ilove {

            @Override
            public void love(int a) {
                System.out.println("I love You!" + a + "年");
            }
        }


        //5
        Ilove love1 = new Ilove() {
            @Override
            public void love(int a) {
                System.out.println("I love You!" + a + "年");
            }
        };
        love1.love(5);


        //6 lambda表达式简化
        Ilove love2 = (int a) -> {
            System.out.println("I love You!" + a + "年");
        };

        //
        love2.love(6);


        //简化1 参数类型
        love = (a) -> {
            System.out.println("I love You!" + a + "年");

        };

        //简化2 简化括号
        love = a -> {
            System.out.println("I love You!" + a + "年");

        };
        love.love(521);

        //简化3 去掉花括号
        love = a-> System.out.println("I love You!" + a + "年");

        love.love(6666);

        // 演变:从外部实现类-》静态内部类-》局部内部类-》匿名内部类—》lambda表达式

        // lambda表达式只能有一行的情况下才能简化成一行，如果有多行，需要代码块
        // 前提是接口为函数式接口，[也就是只有一个方法]，就先线程里的只有一个run方法
        // 多个参数也可以去掉参数类型，要去掉的话需要全部都去掉，必须街上括号(a,b)



    }


    //3
    static class Love implements Ilove {

        @Override
        public void love(int a) {
            System.out.println("I love You!" + a + "年");
        }
    }


}

//0
interface Ilove {
    void love(int a);
}

//1
class Love implements Ilove {

    @Override
    public void love(int a) {
        System.out.println("I love You!" + 2 + "年");
    }
}


